<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>register_object_model_3d_global [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_3dobjectmodel.html">3D Object Model</a> / <a href="toc_3dobjectmodel_transformations.html">变换</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">register_object_model_3d_global</span><span data-if="c" style="display:none;">T_register_object_model_3d_global</span><span data-if="cpp" style="display:none;">RegisterObjectModel3dGlobal</span><span data-if="dotnet" style="display:none;">RegisterObjectModel3dGlobal</span><span data-if="python" style="display:none;">register_object_model_3d_global</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">register_object_model_3d_global</span><span data-if="c" style="display:none;">T_register_object_model_3d_global</span><span data-if="cpp" style="display:none;">RegisterObjectModel3dGlobal</span><span data-if="dotnet" style="display:none;">RegisterObjectModel3dGlobal</span><span data-if="python" style="display:none;">register_object_model_3d_global</span></code> — Improve the relative transformations between 3D object models based on
their overlaps.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>register_object_model_3d_global</b>( :  : <a href="#ObjectModels3D"><i>ObjectModels3D</i></a>, <a href="#HomMats3D"><i>HomMats3D</i></a>, <a href="#From"><i>From</i></a>, <a href="#To"><i>To</i></a>, <a href="#GenParamName"><i>GenParamName</i></a>, <a href="#GenParamValue"><i>GenParamValue</i></a> : <a href="#HomMats3DOut"><i>HomMats3DOut</i></a>, <a href="#Scores"><i>Scores</i></a>)</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_register_object_model_3d_global</b>(const Htuple <a href="#ObjectModels3D"><i>ObjectModels3D</i></a>, const Htuple <a href="#HomMats3D"><i>HomMats3D</i></a>, const Htuple <a href="#From"><i>From</i></a>, const Htuple <a href="#To"><i>To</i></a>, const Htuple <a href="#GenParamName"><i>GenParamName</i></a>, const Htuple <a href="#GenParamValue"><i>GenParamValue</i></a>, Htuple* <a href="#HomMats3DOut"><i>HomMats3DOut</i></a>, Htuple* <a href="#Scores"><i>Scores</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>RegisterObjectModel3dGlobal</b>(const HTuple&amp; <a href="#ObjectModels3D"><i>ObjectModels3D</i></a>, const HTuple&amp; <a href="#HomMats3D"><i>HomMats3D</i></a>, const HTuple&amp; <a href="#From"><i>From</i></a>, const HTuple&amp; <a href="#To"><i>To</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>, HTuple* <a href="#HomMats3DOut"><i>HomMats3DOut</i></a>, HTuple* <a href="#Scores"><i>Scores</i></a>)</code></p>
<p>
<code>static HHomMat3DArray <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>RegisterObjectModel3dGlobal</b>(const HObjectModel3DArray&amp; <a href="#ObjectModels3D"><i>ObjectModels3D</i></a>, const HHomMat3DArray&amp; <a href="#HomMats3D"><i>HomMats3D</i></a>, const HTuple&amp; <a href="#From"><i>From</i></a>, const HTuple&amp; <a href="#To"><i>To</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>, HTuple* <a href="#Scores"><i>Scores</i></a>)</code></p>
<p>
<code>HHomMat3DArray <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>RegisterObjectModel3dGlobal</b>(const HHomMat3DArray&amp; <a href="#HomMats3D"><i>HomMats3D</i></a>, const HString&amp; <a href="#From"><i>From</i></a>, Hlong <a href="#To"><i>To</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>, HTuple* <a href="#Scores"><i>Scores</i></a>) const</code></p>
<p>
<code>HHomMat3DArray <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>RegisterObjectModel3dGlobal</b>(const HHomMat3DArray&amp; <a href="#HomMats3D"><i>HomMats3D</i></a>, const char* <a href="#From"><i>From</i></a>, Hlong <a href="#To"><i>To</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>, HTuple* <a href="#Scores"><i>Scores</i></a>) const</code></p>
<p>
<code>HHomMat3DArray <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>RegisterObjectModel3dGlobal</b>(const HHomMat3DArray&amp; <a href="#HomMats3D"><i>HomMats3D</i></a>, const wchar_t* <a href="#From"><i>From</i></a>, Hlong <a href="#To"><i>To</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>, HTuple* <a href="#Scores"><i>Scores</i></a>) const  <span class="signnote">
            (
            Windows only)
          </span></code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>RegisterObjectModel3dGlobal</b>(<a href="HTuple.html">HTuple</a> <a href="#ObjectModels3D"><i>objectModels3D</i></a>, <a href="HTuple.html">HTuple</a> <a href="#HomMats3D"><i>homMats3D</i></a>, <a href="HTuple.html">HTuple</a> <a href="#From"><i>from</i></a>, <a href="HTuple.html">HTuple</a> <a href="#To"><i>to</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#HomMats3DOut"><i>homMats3DOut</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Scores"><i>scores</i></a>)</code></p>
<p>
<code>static <a href="HHomMat3D.html">HHomMat3D[]</a> <a href="HObjectModel3D.html">HObjectModel3D</a>.<b>RegisterObjectModel3dGlobal</b>(<a href="HObjectModel3D.html">HObjectModel3D[]</a> <a href="#ObjectModels3D"><i>objectModels3D</i></a>, <a href="HHomMat3D.html">HHomMat3D[]</a> <a href="#HomMats3D"><i>homMats3D</i></a>, <a href="HTuple.html">HTuple</a> <a href="#From"><i>from</i></a>, <a href="HTuple.html">HTuple</a> <a href="#To"><i>to</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Scores"><i>scores</i></a>)</code></p>
<p>
<code><a href="HHomMat3D.html">HHomMat3D[]</a> <a href="HObjectModel3D.html">HObjectModel3D</a>.<b>RegisterObjectModel3dGlobal</b>(<a href="HHomMat3D.html">HHomMat3D[]</a> <a href="#HomMats3D"><i>homMats3D</i></a>, string <a href="#From"><i>from</i></a>, int <a href="#To"><i>to</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Scores"><i>scores</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>register_object_model_3d_global</b>(<a href="#ObjectModels3D"><i>object_models_3d</i></a>: MaybeSequence[HHandle], <a href="#HomMats3D"><i>hom_mats_3d</i></a>: Sequence[Union[int, float]], <a href="#From"><i>from_val</i></a>: MaybeSequence[Union[int, str]], <a href="#To"><i>to</i></a>: MaybeSequence[int], <a href="#GenParamName"><i>gen_param_name</i></a>: Sequence[str], <a href="#GenParamValue"><i>gen_param_value</i></a>: Sequence[Union[int, str, float]]) -&gt; Tuple[Sequence[Union[int, float]], Sequence[float]]</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p><code><span data-if="hdevelop" style="display:inline">register_object_model_3d_global</span><span data-if="c" style="display:none">register_object_model_3d_global</span><span data-if="cpp" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="com" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="dotnet" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="python" style="display:none">register_object_model_3d_global</span></code> improves the relative transformations
between 3D object models, which is called global registration.
In particular, under the assumption that all input 3D objects
models in <a href="#ObjectModels3D"><i><code><span data-if="hdevelop" style="display:inline">ObjectModels3D</span><span data-if="c" style="display:none">ObjectModels3D</span><span data-if="cpp" style="display:none">ObjectModels3D</span><span data-if="com" style="display:none">ObjectModels3D</span><span data-if="dotnet" style="display:none">objectModels3D</span><span data-if="python" style="display:none">object_models_3d</span></code></i></a> have a known approximated
spatial relation,
all possible pairwise overlapping areas are calculated and optimized for
a better alignment. The resulting offset is
then synchronously minimized for all pairs. The entire
process is then repeated iteratively from the newly resulting starting poses.
The result in <a href="#HomMats3DOut"><i><code><span data-if="hdevelop" style="display:inline">HomMats3DOut</span><span data-if="c" style="display:none">HomMats3DOut</span><span data-if="cpp" style="display:none">HomMats3DOut</span><span data-if="com" style="display:none">HomMats3DOut</span><span data-if="dotnet" style="display:none">homMats3DOut</span><span data-if="python" style="display:none">hom_mats_3dout</span></code></i></a> describes a transformation that
can be applied with <a href="affine_trans_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">affine_trans_object_model_3d</span><span data-if="c" style="display:none">affine_trans_object_model_3d</span><span data-if="cpp" style="display:none">AffineTransObjectModel3d</span><span data-if="com" style="display:none">AffineTransObjectModel3d</span><span data-if="dotnet" style="display:none">AffineTransObjectModel3d</span><span data-if="python" style="display:none">affine_trans_object_model_3d</span></code></a> to the input
3D object models to transform all in a common reference frame.
<a href="#Scores"><i><code><span data-if="hdevelop" style="display:inline">Scores</span><span data-if="c" style="display:none">Scores</span><span data-if="cpp" style="display:none">Scores</span><span data-if="com" style="display:none">Scores</span><span data-if="dotnet" style="display:none">scores</span><span data-if="python" style="display:none">scores</span></code></i></a> contains for every 3D object model the number of found
neighbors with a sufficient
overlap. If no overlap is found for at least one object, an exception is
raised.
</p>
<p>Three types for the interpretation of the starting poses in
<a href="#HomMats3D"><i><code><span data-if="hdevelop" style="display:inline">HomMats3D</span><span data-if="c" style="display:none">HomMats3D</span><span data-if="cpp" style="display:none">HomMats3D</span><span data-if="com" style="display:none">HomMats3D</span><span data-if="dotnet" style="display:none">homMats3D</span><span data-if="python" style="display:none">hom_mats_3d</span></code></i></a> are available, which is controlled by the parameters
<a href="#From"><i><code><span data-if="hdevelop" style="display:inline">From</span><span data-if="c" style="display:none">From</span><span data-if="cpp" style="display:none">From</span><span data-if="com" style="display:none">From</span><span data-if="dotnet" style="display:none">from</span><span data-if="python" style="display:none">from</span></code></i></a> and <a href="#To"><i><code><span data-if="hdevelop" style="display:inline">To</span><span data-if="c" style="display:none">To</span><span data-if="cpp" style="display:none">To</span><span data-if="com" style="display:none">To</span><span data-if="dotnet" style="display:none">to</span><span data-if="python" style="display:none">to</span></code></i></a>:
</p>
<p>First, if <a href="#From"><i><code><span data-if="hdevelop" style="display:inline">From</span><span data-if="c" style="display:none">From</span><span data-if="cpp" style="display:none">From</span><span data-if="com" style="display:none">From</span><span data-if="dotnet" style="display:none">from</span><span data-if="python" style="display:none">from</span></code></i></a> is set to <i><span data-if="hdevelop" style="display:inline">'global'</span><span data-if="c" style="display:none">"global"</span><span data-if="cpp" style="display:none">"global"</span><span data-if="com" style="display:none">"global"</span><span data-if="dotnet" style="display:none">"global"</span><span data-if="python" style="display:none">"global"</span></i>, the
parameter <a href="#HomMats3D"><i><code><span data-if="hdevelop" style="display:inline">HomMats3D</span><span data-if="c" style="display:none">HomMats3D</span><span data-if="cpp" style="display:none">HomMats3D</span><span data-if="com" style="display:none">HomMats3D</span><span data-if="dotnet" style="display:none">homMats3D</span><span data-if="python" style="display:none">hom_mats_3d</span></code></i></a> must contain a rigid transformation with
12 entries for each 3D object model in <a href="#ObjectModels3D"><i><code><span data-if="hdevelop" style="display:inline">ObjectModels3D</span><span data-if="c" style="display:none">ObjectModels3D</span><span data-if="cpp" style="display:none">ObjectModels3D</span><span data-if="com" style="display:none">ObjectModels3D</span><span data-if="dotnet" style="display:none">objectModels3D</span><span data-if="python" style="display:none">object_models_3d</span></code></i></a> that
describes its position in relation to a common global reference frame. In
this case, <a href="#To"><i><code><span data-if="hdevelop" style="display:inline">To</span><span data-if="c" style="display:none">To</span><span data-if="cpp" style="display:none">To</span><span data-if="com" style="display:none">To</span><span data-if="dotnet" style="display:none">to</span><span data-if="python" style="display:none">to</span></code></i></a> must be empty. This case is suitable, e.g.,
if transformations are applied by a turning table or a robot to either
the camera or the object. In this case, all neighborhoods that are possible
are considered for the global optimization.
</p>
<p>Second,  if <a href="#From"><i><code><span data-if="hdevelop" style="display:inline">From</span><span data-if="c" style="display:none">From</span><span data-if="cpp" style="display:none">From</span><span data-if="com" style="display:none">From</span><span data-if="dotnet" style="display:none">from</span><span data-if="python" style="display:none">from</span></code></i></a> is set to
<i><span data-if="hdevelop" style="display:inline">'previous'</span><span data-if="c" style="display:none">"previous"</span><span data-if="cpp" style="display:none">"previous"</span><span data-if="com" style="display:none">"previous"</span><span data-if="dotnet" style="display:none">"previous"</span><span data-if="python" style="display:none">"previous"</span></i>, the parameter <a href="#HomMats3D"><i><code><span data-if="hdevelop" style="display:inline">HomMats3D</span><span data-if="c" style="display:none">HomMats3D</span><span data-if="cpp" style="display:none">HomMats3D</span><span data-if="com" style="display:none">HomMats3D</span><span data-if="dotnet" style="display:none">homMats3D</span><span data-if="python" style="display:none">hom_mats_3d</span></code></i></a> must contain a
rigid transformation for each subsequent pair of 3D object models in
<a href="#ObjectModels3D"><i><code><span data-if="hdevelop" style="display:inline">ObjectModels3D</span><span data-if="c" style="display:none">ObjectModels3D</span><span data-if="cpp" style="display:none">ObjectModels3D</span><span data-if="com" style="display:none">ObjectModels3D</span><span data-if="dotnet" style="display:none">objectModels3D</span><span data-if="python" style="display:none">object_models_3d</span></code></i></a> (one less than for the first case).
An example for this
situation might be a matching applied consecutively to the previous
frame (e.g., with <a href="register_object_model_3d_pair.html"><code><span data-if="hdevelop" style="display:inline">register_object_model_3d_pair</span><span data-if="c" style="display:none">register_object_model_3d_pair</span><span data-if="cpp" style="display:none">RegisterObjectModel3dPair</span><span data-if="com" style="display:none">RegisterObjectModel3dPair</span><span data-if="dotnet" style="display:none">RegisterObjectModel3dPair</span><span data-if="python" style="display:none">register_object_model_3d_pair</span></code></a>). <a href="#To"><i><code><span data-if="hdevelop" style="display:inline">To</span><span data-if="c" style="display:none">To</span><span data-if="cpp" style="display:none">To</span><span data-if="com" style="display:none">To</span><span data-if="dotnet" style="display:none">to</span><span data-if="python" style="display:none">to</span></code></i></a> must
be empty again. In this case, all neighborhoods that are possible
are considered for the global optimization.
</p>
<p>Third, you can describe any transformation in <a href="#HomMats3D"><i><code><span data-if="hdevelop" style="display:inline">HomMats3D</span><span data-if="c" style="display:none">HomMats3D</span><span data-if="cpp" style="display:none">HomMats3D</span><span data-if="com" style="display:none">HomMats3D</span><span data-if="dotnet" style="display:none">homMats3D</span><span data-if="python" style="display:none">hom_mats_3d</span></code></i></a>
by setting <a href="#From"><i><code><span data-if="hdevelop" style="display:inline">From</span><span data-if="c" style="display:none">From</span><span data-if="cpp" style="display:none">From</span><span data-if="com" style="display:none">From</span><span data-if="dotnet" style="display:none">from</span><span data-if="python" style="display:none">from</span></code></i></a> and <a href="#To"><i><code><span data-if="hdevelop" style="display:inline">To</span><span data-if="c" style="display:none">To</span><span data-if="cpp" style="display:none">To</span><span data-if="com" style="display:none">To</span><span data-if="dotnet" style="display:none">to</span><span data-if="python" style="display:none">to</span></code></i></a> to the indices of the
3D object models for which the corresponding transformation is valid.
That is, a given transformation describes the transformation that is needed
to move the 3D object model with the index that is specified in
<a href="#From"><i><code><span data-if="hdevelop" style="display:inline">From</span><span data-if="c" style="display:none">From</span><span data-if="cpp" style="display:none">From</span><span data-if="com" style="display:none">From</span><span data-if="dotnet" style="display:none">from</span><span data-if="python" style="display:none">from</span></code></i></a> into the coordinate system of the 3D object model with the
corresponding index that is specified in <a href="#To"><i><code><span data-if="hdevelop" style="display:inline">To</span><span data-if="c" style="display:none">To</span><span data-if="cpp" style="display:none">To</span><span data-if="com" style="display:none">To</span><span data-if="dotnet" style="display:none">to</span><span data-if="python" style="display:none">to</span></code></i></a>.
In this case, <a href="#HomMats3D"><i><code><span data-if="hdevelop" style="display:inline">HomMats3D</span><span data-if="c" style="display:none">HomMats3D</span><span data-if="cpp" style="display:none">HomMats3D</span><span data-if="com" style="display:none">HomMats3D</span><span data-if="dotnet" style="display:none">homMats3D</span><span data-if="python" style="display:none">hom_mats_3d</span></code></i></a>
should contain all possible neighborhood relations between the objects,
since no other than these neighborhoods are considered for
the optimization. Please consider, that for all 3D object
models at least one path of transformations to each other 3D object
model must be contained in the such specified transformations.
</p>
<p>If <a href="#ObjectModels3D"><i><code><span data-if="hdevelop" style="display:inline">ObjectModels3D</span><span data-if="c" style="display:none">ObjectModels3D</span><span data-if="cpp" style="display:none">ObjectModels3D</span><span data-if="com" style="display:none">ObjectModels3D</span><span data-if="dotnet" style="display:none">objectModels3D</span><span data-if="python" style="display:none">object_models_3d</span></code></i></a> contains 3D-primitives, they will internally
be transformed into point clouds and will be considered as such.
</p>
<p>The accuracy of the returned poses is limited to around
0.1% of the size of the point clouds due to numerical reasons. The accuracy
further depends on the noise of the data points, the number of
data points and the shape of the point clouds.
</p>
<p>The process of the global registration can be controlled further
by the following generic parameters in
<a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> and <a href="#GenParamValue"><i><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></i></a>:
</p>
<dl class="generic">

<dt><b><i><span data-if="hdevelop" style="display:inline">'default_parameters'</span><span data-if="c" style="display:none">"default_parameters"</span><span data-if="cpp" style="display:none">"default_parameters"</span><span data-if="com" style="display:none">"default_parameters"</span><span data-if="dotnet" style="display:none">"default_parameters"</span><span data-if="python" style="display:none">"default_parameters"</span></i>:</b></dt>
<dd>
<p>
 Allows to choose between two
default parameter sets, i.e., it allows to switch between a
<i><span data-if="hdevelop" style="display:inline">'fast'</span><span data-if="c" style="display:none">"fast"</span><span data-if="cpp" style="display:none">"fast"</span><span data-if="com" style="display:none">"fast"</span><span data-if="dotnet" style="display:none">"fast"</span><span data-if="python" style="display:none">"fast"</span></i> and an <i><span data-if="hdevelop" style="display:inline">'accurate'</span><span data-if="c" style="display:none">"accurate"</span><span data-if="cpp" style="display:none">"accurate"</span><span data-if="com" style="display:none">"accurate"</span><span data-if="dotnet" style="display:none">"accurate"</span><span data-if="python" style="display:none">"accurate"</span></i> set
of parameters.</p>
<p>
<span class="pardesc"><span class="parcat">List of values:
      </span></span> <i><span data-if="hdevelop" style="display:inline">'fast'</span><span data-if="c" style="display:none">"fast"</span><span data-if="cpp" style="display:none">"fast"</span><span data-if="com" style="display:none">"fast"</span><span data-if="dotnet" style="display:none">"fast"</span><span data-if="python" style="display:none">"fast"</span></i>, <i><span data-if="hdevelop" style="display:inline">'accurate'</span><span data-if="c" style="display:none">"accurate"</span><span data-if="cpp" style="display:none">"accurate"</span><span data-if="com" style="display:none">"accurate"</span><span data-if="dotnet" style="display:none">"accurate"</span><span data-if="python" style="display:none">"accurate"</span></i>.</p>
<p>
<span class="pardesc"><span class="parcat">Default:
      </span></span> <i><span data-if="hdevelop" style="display:inline">'accurate'</span><span data-if="c" style="display:none">"accurate"</span><span data-if="cpp" style="display:none">"accurate"</span><span data-if="com" style="display:none">"accurate"</span><span data-if="dotnet" style="display:none">"accurate"</span><span data-if="python" style="display:none">"accurate"</span></i>.
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'rel_sampling_distance'</span><span data-if="c" style="display:none">"rel_sampling_distance"</span><span data-if="cpp" style="display:none">"rel_sampling_distance"</span><span data-if="com" style="display:none">"rel_sampling_distance"</span><span data-if="dotnet" style="display:none">"rel_sampling_distance"</span><span data-if="python" style="display:none">"rel_sampling_distance"</span></i>:</b></dt>
<dd>
<p>
   The relative
sampling rate of the 3D object models.
This value is relative to the object's diameter and refers to
the minimal distance between two sampled points. A higher value
leads to faster results, whereas a lower value leads to more accurate
results.</p>
<p>
<span class="pardesc"><span class="parcat">Suggested values:
      </span></span> <i>0.03</i>, <i>0.05</i>, <i>0.07</i>.</p>
<p>
<span class="pardesc"><span class="parcat">Default:
      </span></span> <i>0.05</i> (<i><span data-if="hdevelop" style="display:inline">'default_parameters'</span><span data-if="c" style="display:none">"default_parameters"</span><span data-if="cpp" style="display:none">"default_parameters"</span><span data-if="com" style="display:none">"default_parameters"</span><span data-if="dotnet" style="display:none">"default_parameters"</span><span data-if="python" style="display:none">"default_parameters"</span></i> =
<i><span data-if="hdevelop" style="display:inline">'accurate'</span><span data-if="c" style="display:none">"accurate"</span><span data-if="cpp" style="display:none">"accurate"</span><span data-if="com" style="display:none">"accurate"</span><span data-if="dotnet" style="display:none">"accurate"</span><span data-if="python" style="display:none">"accurate"</span></i>),
<i>0.07</i> (<i><span data-if="hdevelop" style="display:inline">'default_parameters'</span><span data-if="c" style="display:none">"default_parameters"</span><span data-if="cpp" style="display:none">"default_parameters"</span><span data-if="com" style="display:none">"default_parameters"</span><span data-if="dotnet" style="display:none">"default_parameters"</span><span data-if="python" style="display:none">"default_parameters"</span></i> = <i><span data-if="hdevelop" style="display:inline">'fast'</span><span data-if="c" style="display:none">"fast"</span><span data-if="cpp" style="display:none">"fast"</span><span data-if="com" style="display:none">"fast"</span><span data-if="dotnet" style="display:none">"fast"</span><span data-if="python" style="display:none">"fast"</span></i>).</p>
<p>
<span class="pardesc"><span class="parcat">Restriction:
      </span></span> 0 &lt; <i><span data-if="hdevelop" style="display:inline">'rel_sampling_distance'</span><span data-if="c" style="display:none">"rel_sampling_distance"</span><span data-if="cpp" style="display:none">"rel_sampling_distance"</span><span data-if="com" style="display:none">"rel_sampling_distance"</span><span data-if="dotnet" style="display:none">"rel_sampling_distance"</span><span data-if="python" style="display:none">"rel_sampling_distance"</span></i> &lt; 1
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'pose_ref_sub_sampling'</span><span data-if="c" style="display:none">"pose_ref_sub_sampling"</span><span data-if="cpp" style="display:none">"pose_ref_sub_sampling"</span><span data-if="com" style="display:none">"pose_ref_sub_sampling"</span><span data-if="dotnet" style="display:none">"pose_ref_sub_sampling"</span><span data-if="python" style="display:none">"pose_ref_sub_sampling"</span></i>:</b></dt>
<dd>
<p>
 Number of points that are skipped
for the pose refinement. The value specifies the number of points
that  are skipped per selected point. Increasing this value
allows faster convergence at the cost of less accurate results.
The internally used method for the refinement is asymmetric and
this parameter only affects the second model of each tested pair.</p>
<p>
<span class="pardesc"><span class="parcat">Suggested values:
      </span></span> <i>1</i>, <i>2</i>, <i>20</i>.</p>
<p>
<span class="pardesc"><span class="parcat">Default:
      </span></span> <i>2</i> (<i><span data-if="hdevelop" style="display:inline">'default_parameters'</span><span data-if="c" style="display:none">"default_parameters"</span><span data-if="cpp" style="display:none">"default_parameters"</span><span data-if="com" style="display:none">"default_parameters"</span><span data-if="dotnet" style="display:none">"default_parameters"</span><span data-if="python" style="display:none">"default_parameters"</span></i> =
<i><span data-if="hdevelop" style="display:inline">'accurate'</span><span data-if="c" style="display:none">"accurate"</span><span data-if="cpp" style="display:none">"accurate"</span><span data-if="com" style="display:none">"accurate"</span><span data-if="dotnet" style="display:none">"accurate"</span><span data-if="python" style="display:none">"accurate"</span></i>),
<i>10</i> (<i><span data-if="hdevelop" style="display:inline">'default_parameters'</span><span data-if="c" style="display:none">"default_parameters"</span><span data-if="cpp" style="display:none">"default_parameters"</span><span data-if="com" style="display:none">"default_parameters"</span><span data-if="dotnet" style="display:none">"default_parameters"</span><span data-if="python" style="display:none">"default_parameters"</span></i> = <i><span data-if="hdevelop" style="display:inline">'fast'</span><span data-if="c" style="display:none">"fast"</span><span data-if="cpp" style="display:none">"fast"</span><span data-if="com" style="display:none">"fast"</span><span data-if="dotnet" style="display:none">"fast"</span><span data-if="python" style="display:none">"fast"</span></i>).</p>
<p>
<span class="pardesc"><span class="parcat">Restriction:
      </span></span> <i><span data-if="hdevelop" style="display:inline">'pose_ref_sub_sampling'</span><span data-if="c" style="display:none">"pose_ref_sub_sampling"</span><span data-if="cpp" style="display:none">"pose_ref_sub_sampling"</span><span data-if="com" style="display:none">"pose_ref_sub_sampling"</span><span data-if="dotnet" style="display:none">"pose_ref_sub_sampling"</span><span data-if="python" style="display:none">"pose_ref_sub_sampling"</span></i> &gt; 0
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'max_num_iterations'</span><span data-if="c" style="display:none">"max_num_iterations"</span><span data-if="cpp" style="display:none">"max_num_iterations"</span><span data-if="com" style="display:none">"max_num_iterations"</span><span data-if="dotnet" style="display:none">"max_num_iterations"</span><span data-if="python" style="display:none">"max_num_iterations"</span></i>:</b></dt>
<dd>
<p>
 Number of iterations applied
to adjust the initial alignment. The better the initial alignment is,
the less iterations are necessary. </p>
<p>
<span class="pardesc"><span class="parcat">Suggested values:
      </span></span> <i>1</i>, <i>3</i>, <i>10</i>.</p>
<p>
<span class="pardesc"><span class="parcat">Default:
      </span></span> <i>3</i>.
</p>
</dd>
</dl>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  
    <li>Automatically parallelized on internal data level.</li>
  
</ul>
<p>This operator supports canceling timeouts and interrupts.</p>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="ObjectModels3D" class="parname"><b><code><span data-if="hdevelop" style="display:inline">ObjectModels3D</span><span data-if="c" style="display:none">ObjectModels3D</span><span data-if="cpp" style="display:none">ObjectModels3D</span><span data-if="com" style="display:none">ObjectModels3D</span><span data-if="dotnet" style="display:none">objectModels3D</span><span data-if="python" style="display:none">object_models_3d</span></code></b> (input_control)  </span><span>object_model_3d(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HObjectModel3D.html">HObjectModel3D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[HHandle]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handles of several 3D object models.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="HomMats3D" class="parname"><b><code><span data-if="hdevelop" style="display:inline">HomMats3D</span><span data-if="c" style="display:none">HomMats3D</span><span data-if="cpp" style="display:none">HomMats3D</span><span data-if="com" style="display:none">HomMats3D</span><span data-if="dotnet" style="display:none">homMats3D</span><span data-if="python" style="display:none">hom_mats_3d</span></code></b> (input_control)  </span><span>hom_mat3d-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HHomMat3D.html">HHomMat3D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[int, float]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Approximate relative transformations between
the 3D object models.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="From" class="parname"><b><code><span data-if="hdevelop" style="display:inline">From</span><span data-if="c" style="display:none">From</span><span data-if="cpp" style="display:none">From</span><span data-if="com" style="display:none">From</span><span data-if="dotnet" style="display:none">from</span><span data-if="python" style="display:none">from</span></code></b> (input_control)  </span><span>number(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[Union[int, str]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>string</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>HString</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>char*</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Type of interpretation for the transformations.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'global'</span>
    <span data-if="c" style="display:none">"global"</span>
    <span data-if="cpp" style="display:none">"global"</span>
    <span data-if="com" style="display:none">"global"</span>
    <span data-if="dotnet" style="display:none">"global"</span>
    <span data-if="python" style="display:none">"global"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span>0, 1, 2, 3, 4, <span data-if="hdevelop" style="display:inline">'global'</span><span data-if="c" style="display:none">"global"</span><span data-if="cpp" style="display:none">"global"</span><span data-if="com" style="display:none">"global"</span><span data-if="dotnet" style="display:none">"global"</span><span data-if="python" style="display:none">"global"</span>, <span data-if="hdevelop" style="display:inline">'previous'</span><span data-if="c" style="display:none">"previous"</span><span data-if="cpp" style="display:none">"previous"</span><span data-if="com" style="display:none">"previous"</span><span data-if="dotnet" style="display:none">"previous"</span><span data-if="python" style="display:none">"previous"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="To" class="parname"><b><code><span data-if="hdevelop" style="display:inline">To</span><span data-if="c" style="display:none">To</span><span data-if="cpp" style="display:none">To</span><span data-if="com" style="display:none">To</span><span data-if="dotnet" style="display:none">to</span><span data-if="python" style="display:none">to</span></code></b> (input_control)  </span><span>number(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[int]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Target indices of the transformations if
<a href="#From"><i><code><span data-if="hdevelop" style="display:inline">From</span><span data-if="c" style="display:none">From</span><span data-if="cpp" style="display:none">From</span><span data-if="com" style="display:none">From</span><span data-if="dotnet" style="display:none">from</span><span data-if="python" style="display:none">from</span></code></i></a> specifies the source indices, otherwise
the parameter must be empty.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>[]</p>
<p class="pardesc"><span class="parcat">List of values:
      </span>0, 1, 2, 3, 4</p>
</div>
  <div class="par">
<div class="parhead">
<span id="GenParamName" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></b> (input_control)  </span><span>string-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[str]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Names of the generic parameters that can be adjusted
for the global 3D object model registration.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>[]</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'default_parameters'</span><span data-if="c" style="display:none">"default_parameters"</span><span data-if="cpp" style="display:none">"default_parameters"</span><span data-if="com" style="display:none">"default_parameters"</span><span data-if="dotnet" style="display:none">"default_parameters"</span><span data-if="python" style="display:none">"default_parameters"</span>, <span data-if="hdevelop" style="display:inline">'max_num_iterations'</span><span data-if="c" style="display:none">"max_num_iterations"</span><span data-if="cpp" style="display:none">"max_num_iterations"</span><span data-if="com" style="display:none">"max_num_iterations"</span><span data-if="dotnet" style="display:none">"max_num_iterations"</span><span data-if="python" style="display:none">"max_num_iterations"</span>, <span data-if="hdevelop" style="display:inline">'pose_ref_sub_sampling'</span><span data-if="c" style="display:none">"pose_ref_sub_sampling"</span><span data-if="cpp" style="display:none">"pose_ref_sub_sampling"</span><span data-if="com" style="display:none">"pose_ref_sub_sampling"</span><span data-if="dotnet" style="display:none">"pose_ref_sub_sampling"</span><span data-if="python" style="display:none">"pose_ref_sub_sampling"</span>, <span data-if="hdevelop" style="display:inline">'rel_sampling_distance'</span><span data-if="c" style="display:none">"rel_sampling_distance"</span><span data-if="cpp" style="display:none">"rel_sampling_distance"</span><span data-if="com" style="display:none">"rel_sampling_distance"</span><span data-if="dotnet" style="display:none">"rel_sampling_distance"</span><span data-if="python" style="display:none">"rel_sampling_distance"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="GenParamValue" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></b> (input_control)  </span><span>number-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[int, str, float]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer / </span><span data-if="hdevelop" style="display:inline">string)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long / </span><span data-if="dotnet" style="display:none">string)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong / </span><span data-if="cpp" style="display:none">HString)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong / </span><span data-if="c" style="display:none">char*)</span></span>
</div>
<p class="pardesc">Values of the generic parameters that can be adjusted
for the global 3D object model registration.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>[]</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>0.03, 0.05, 0.07, 0.1, 0.25, 0.5, 1, 2, 5, 10, 20, <span data-if="hdevelop" style="display:inline">'fast'</span><span data-if="c" style="display:none">"fast"</span><span data-if="cpp" style="display:none">"fast"</span><span data-if="com" style="display:none">"fast"</span><span data-if="dotnet" style="display:none">"fast"</span><span data-if="python" style="display:none">"fast"</span>, <span data-if="hdevelop" style="display:inline">'accurate'</span><span data-if="c" style="display:none">"accurate"</span><span data-if="cpp" style="display:none">"accurate"</span><span data-if="com" style="display:none">"accurate"</span><span data-if="dotnet" style="display:none">"accurate"</span><span data-if="python" style="display:none">"accurate"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="HomMats3DOut" class="parname"><b><code><span data-if="hdevelop" style="display:inline">HomMats3DOut</span><span data-if="c" style="display:none">HomMats3DOut</span><span data-if="cpp" style="display:none">HomMats3DOut</span><span data-if="com" style="display:none">HomMats3DOut</span><span data-if="dotnet" style="display:none">homMats3DOut</span><span data-if="python" style="display:none">hom_mats_3dout</span></code></b> (output_control)  </span><span>hom_mat3d-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HHomMat3D.html">HHomMat3D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[int, float]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Resulting Transformations.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="Scores" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Scores</span><span data-if="c" style="display:none">Scores</span><span data-if="cpp" style="display:none">Scores</span><span data-if="com" style="display:none">Scores</span><span data-if="dotnet" style="display:none">scores</span><span data-if="python" style="display:none">scores</span></code></b> (output_control)  </span><span>number-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Number of overlapping neighbors for each
3D object model.</p>
</div>
<h2 id="sec_result">结果</h2>
<p><code><span data-if="hdevelop" style="display:inline">register_object_model_3d_global</span><span data-if="c" style="display:none">register_object_model_3d_global</span><span data-if="cpp" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="com" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="dotnet" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="python" style="display:none">register_object_model_3d_global</span></code> returns <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
     if all parameters
are correct. 如有必要，将引发异常。</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="read_object_model_3d.html"><span data-if="hdevelop" style="display:inline">read_object_model_3d</span><span data-if="c" style="display:none">read_object_model_3d</span><span data-if="cpp" style="display:none">ReadObjectModel3d</span><span data-if="com" style="display:none">ReadObjectModel3d</span><span data-if="dotnet" style="display:none">ReadObjectModel3d</span><span data-if="python" style="display:none">read_object_model_3d</span></a></code>, 
<code><a href="xyz_to_object_model_3d.html"><span data-if="hdevelop" style="display:inline">xyz_to_object_model_3d</span><span data-if="c" style="display:none">xyz_to_object_model_3d</span><span data-if="cpp" style="display:none">XyzToObjectModel3d</span><span data-if="com" style="display:none">XyzToObjectModel3d</span><span data-if="dotnet" style="display:none">XyzToObjectModel3d</span><span data-if="python" style="display:none">xyz_to_object_model_3d</span></a></code>, 
<code><a href="register_object_model_3d_pair.html"><span data-if="hdevelop" style="display:inline">register_object_model_3d_pair</span><span data-if="c" style="display:none">register_object_model_3d_pair</span><span data-if="cpp" style="display:none">RegisterObjectModel3dPair</span><span data-if="com" style="display:none">RegisterObjectModel3dPair</span><span data-if="dotnet" style="display:none">RegisterObjectModel3dPair</span><span data-if="python" style="display:none">register_object_model_3d_pair</span></a></code>, 
<code><a href="gen_object_model_3d_from_points.html"><span data-if="hdevelop" style="display:inline">gen_object_model_3d_from_points</span><span data-if="c" style="display:none">gen_object_model_3d_from_points</span><span data-if="cpp" style="display:none">GenObjectModel3dFromPoints</span><span data-if="com" style="display:none">GenObjectModel3dFromPoints</span><span data-if="dotnet" style="display:none">GenObjectModel3dFromPoints</span><span data-if="python" style="display:none">gen_object_model_3d_from_points</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="affine_trans_object_model_3d.html"><span data-if="hdevelop" style="display:inline">affine_trans_object_model_3d</span><span data-if="c" style="display:none">affine_trans_object_model_3d</span><span data-if="cpp" style="display:none">AffineTransObjectModel3d</span><span data-if="com" style="display:none">AffineTransObjectModel3d</span><span data-if="dotnet" style="display:none">AffineTransObjectModel3d</span><span data-if="python" style="display:none">affine_trans_object_model_3d</span></a></code>, 
<code><a href="union_object_model_3d.html"><span data-if="hdevelop" style="display:inline">union_object_model_3d</span><span data-if="c" style="display:none">union_object_model_3d</span><span data-if="cpp" style="display:none">UnionObjectModel3d</span><span data-if="com" style="display:none">UnionObjectModel3d</span><span data-if="dotnet" style="display:none">UnionObjectModel3d</span><span data-if="python" style="display:none">union_object_model_3d</span></a></code>, 
<code><a href="sample_object_model_3d.html"><span data-if="hdevelop" style="display:inline">sample_object_model_3d</span><span data-if="c" style="display:none">sample_object_model_3d</span><span data-if="cpp" style="display:none">SampleObjectModel3d</span><span data-if="com" style="display:none">SampleObjectModel3d</span><span data-if="dotnet" style="display:none">SampleObjectModel3d</span><span data-if="python" style="display:none">sample_object_model_3d</span></a></code>, 
<code><a href="triangulate_object_model_3d.html"><span data-if="hdevelop" style="display:inline">triangulate_object_model_3d</span><span data-if="c" style="display:none">triangulate_object_model_3d</span><span data-if="cpp" style="display:none">TriangulateObjectModel3d</span><span data-if="com" style="display:none">TriangulateObjectModel3d</span><span data-if="dotnet" style="display:none">TriangulateObjectModel3d</span><span data-if="python" style="display:none">triangulate_object_model_3d</span></a></code>
</p>
<h2 id="sec_see">参考其它</h2>
<p>
<code><a href="register_object_model_3d_pair.html"><span data-if="hdevelop" style="display:inline">register_object_model_3d_pair</span><span data-if="c" style="display:none">register_object_model_3d_pair</span><span data-if="cpp" style="display:none">RegisterObjectModel3dPair</span><span data-if="com" style="display:none">RegisterObjectModel3dPair</span><span data-if="dotnet" style="display:none">RegisterObjectModel3dPair</span><span data-if="python" style="display:none">register_object_model_3d_pair</span></a></code>, 
<code><a href="find_surface_model.html"><span data-if="hdevelop" style="display:inline">find_surface_model</span><span data-if="c" style="display:none">find_surface_model</span><span data-if="cpp" style="display:none">FindSurfaceModel</span><span data-if="com" style="display:none">FindSurfaceModel</span><span data-if="dotnet" style="display:none">FindSurfaceModel</span><span data-if="python" style="display:none">find_surface_model</span></a></code>, 
<code><a href="refine_surface_model_pose.html"><span data-if="hdevelop" style="display:inline">refine_surface_model_pose</span><span data-if="c" style="display:none">refine_surface_model_pose</span><span data-if="cpp" style="display:none">RefineSurfaceModelPose</span><span data-if="com" style="display:none">RefineSurfaceModelPose</span><span data-if="dotnet" style="display:none">RefineSurfaceModelPose</span><span data-if="python" style="display:none">refine_surface_model_pose</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
3D Metrology</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
